package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVo;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

@Api(value = "课程基本信息管理Api",tags = "课程基本信息管理",description = "课程基本信息业务管理")
public interface CourseBaseApi {

    /**
     * 查询全部课程信息
     * @return queryAll() 返回所有课程信息
     */
    @ApiOperation("查询全部课程信息")
    List queryAll();

    /**
     * 分页查询课程信息
     * @param params PageRequestParams 分页信息
     * @param model  QueryCourseModel 课程状态，课程信息
     * @return PageVO  每页数据，数据内容
     */
    @ApiOperation("分页查询课程信息")
    PageVO queryCourseList(PageRequestParams params, QueryCourseModel model);

    @ApiOperation("添加课程信息")
    @ApiImplicitParam(name="courseBaseVo",value = "课程基本视图信息",readOnly = true,dataType = "CourseBaseVo",paramType = "body")
    CourseBaseDTO createCourse(CourseBaseVo courseBaseVo);

    @ApiOperation("根据id查询信息")
    @ApiImplicitParam(name="courseBaseId",value = "课程基本信息ID",readOnly = true,dataType = "Long",paramType = "path" ,example =
    "1")
    CourseBaseDTO getCourseBaseById(Long courseBaseId);

    @ApiOperation("课程基本信息修改")
    @ApiImplicitParam(name="courseBaseVo",value = "课程基本信息vo",readOnly = true,dataType = "CourseBaseVo",paramType = "body")
    CourseBaseDTO modifyCourseBase(CourseBaseVo courseBaseVo);

    @ApiOperation("根据id查询逻辑删除课程信息")
    @ApiImplicitParam(name="courseBaseId",value = "课程基本信息ID",readOnly = true,dataType = "Long",paramType = "path" )
    void removeCourseBase(Long courseBaseId);
}
